﻿Imports System.Windows.Forms
Imports Logica

''' <summary>
''' Recupera la contraseña del usuario
''' </summary>
''' <remarks>Creado por: David Murillo, Creado: 20/06/2010, Modificado: 30/06/2010</remarks>
Public Class RecuperarContrasenna

    ''' <summary>
    ''' Recupera la contraseña de un usuario y envía un correo electrónico.
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 20/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnRecuperar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecuperar.Click

        Dim fechaNac As Date
        Dim fechaNacimBD As Date
        Dim fechaNacim As String
        Dim fechaStringBD As String
        Dim nombreUsuario As String

        For Each control As Control In gbRecuperarPass.Controls
            If TypeOf control Is TextBox Then
                If control.Text = "" Or control.Text.Trim = "" Then
                    control.Focus()
                    lblError.ForeColor = Color.Red
                    lblError.Text = "El campo '" & control.Tag & "' está vacío."
                    Exit Sub
                End If
            End If
        Next

        Try

            nombreUsuario = txtNombreUsuario.Text

            If Gestor.usuarioExisteNombreUsuario(nombreUsuario) = True Then

                fechaNac = dtpFechaNac.Text
                fechaNacim = fechaNac.ToString("dd/MM/yyyy")

                fechaNacimBD = Gestor.usuarioObtenerFechaNac(nombreUsuario)

                fechaStringBD = fechaNacimBD.ToString("dd/MM/yyyy")

                If String.Equals(fechaNacim, fechaStringBD) = True Then

                    ''enviar correo
                    Try
                        Gestor.usuarioRecuperarContrasenna(nombreUsuario)
                        MessageBox.Show("Se le a enviado un correo con su nueva contraseña.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Me.Close()
                    Catch ex As Exception
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try

                Else
                    lblError.ForeColor = Color.Red
                    lblError.Text = "La fecha de nacimiento y la fecha ingresada son diferentes."
                    'fechas diferentes

                End If

            Else

                lblError.ForeColor = Color.Red
                lblError.Text = "El nombre de usuario ingresado no existe."

            End If

        Catch es As SqlClient.SqlException When es.Number.Equals(4060)

            lblError.ForeColor = Color.Red
            lblError.Text = "Error de conexión con la base de datos."

        End Try

    End Sub

    ''' <summary>
    ''' Si se cancela se cierra el dialogo.
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 20/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textbox se limpia el label de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 20/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtNombreUsuario_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNombreUsuario.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Se ejecuta al cargar la pantalla de recuperar contraseña
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 20/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub RecuperarContrasenna_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lblError.Text = ""
        txtNombreUsuario.Focus()
    End Sub

    ''' <summary>
    ''' Link que lleva hacia la ayuda del sistema
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del sistema</param>
    ''' <remarks>Creado por: David Murillo, Creado: 20/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub lnkAyuda_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkAyuda.LinkClicked
        Dim ayuda As New MostrarAyuda
        ayuda.ShowDialog()

    End Sub
End Class
